Conventionally, a relatively low-speed parallel data bus is used for information transfer between LSIs (Large Scale Integrated circuits) or, between apparatuses having LSIs. However, although the parallel data bus may couple the LSIs or the apparatuses in a simple manner, improving the information transfer capacity is difficult due to a skew generated among signals. Accordingly, in recent years, a relatively high-speed serial bus is used to couple the LSI or the apparatuses.
The PCI (Peripheral Component Interconnect) Express is a typical example of the high-speed serial transfer (for example, Japanese Laid-Open Patent Publication No. 59-10056). The PCI Express employs an encoding technique called the 8B10B encoding in order to enable a high-speed serial transfer. The 8B10B encoding is employed in Ethernet, Fiber Channel, IEEE 1394, and the like, in addition to being employed in the PCI Express.
Basically, the 8B10B encoding includes the following two features. First, 256 kinds of 8-bit data characters called D characters illustrated in FIGS. 1 and 12 kinds of control characters called K characters illustrated in FIG. 2 are multiplexed, in order to make a conversion to a 10-bit symbol code using a 3-bit lookup table LUT and a 5-bit lookup table LUT. FIG. 1 illustrates a case in which a 10-bit symbol code is output using the lookup tables LUT based on the 8-bit D characters, K characters, a control character valid signal, and a disparity value. FIG. 2 illustrates the code, symbol, name, and meaning of the K character. Second, because the 10-bit symbol is defined so that identical bit values only appear for 5 consecutive bits at the maximum, at least one transition of the bit value always occurs within 10-bit symbol, thereby making it easy to reproduce a clock on a receiving end apparatus. The transition of the bit value refers to a transition of the bit value from “0” to “1” or, from “1” to “0”.
However, according to the conventional 8B10B encoding, the overhead at the time of the serial transfer is relatively large, and for this reason, a relatively large bandwidth of the serial bus is used up. More particularly, because the 8-bit data character is converted into 10 bits, the bandwidth increases by 25%.
In addition, according to the conventional 8B10B encoding, inconveniences are introduced due to the use of the lookup tables LUT for the data conversion. In other words, a delay time becomes relatively long due to a relatively large circuit scale associated with the lookup tables LUT that are used for the data conversion. More particularly, a 3-bit conversion table and a 5-bit conversion table are required for the conversion from 8 bits into 10 bits (or vice versa), and for this reason, the delay time becomes relatively long.
Moreover, in the conventional 8B10B encoding, the error resilience deteriorates because the 8-bit data is segmented into 3 bits and 5 bits and then converted into the 10-bit symbol using the lookup tables LUT. In other words, when a 1-bit error occurs in a transmission line or channel, a 4-bit error may be generated at the maximum when the 10-bit symbol is restored back into the 8-bit data.
FIG. 3 is a diagram, including a 8B10B code conversion circuit, for explaining a data flow in the serial bus. A transmitting end apparatus 1 converts the 8-bit parallel data into the 10-bit symbol code using a 8B10B code conversion circuit 2. The symbol code is transferred between the transmitting end apparatus 1 and a receiving end apparatus 3 via a serial bus 5. The receiving end apparatus 3 converts the 10-bit symbol code that is received into the 8-bit data by a 10B8B code conversion circuit 4 that performs a reverse procedure to that performed in the transmitting end apparatus 2.
It is assumed for the sake of convenience that the transmitting end data is “57” in hexadecimal (“010101112” in binary in FIG. 3). When this transmitting end data is the D character, the result of the conversion performed in the 8B10B conversion circuit 2 is “055” in hexadecimal (“0001010101” in binary in FIG. 3). In addition, when it is assumed that a 1-bit error occurs when the 10-bit symbol code is being transferred via the serial bus 5 forming the transmission line, and a transition to “255” in hexadecimal (transition from bit “0” to bit “1” in FIG. 3) occurs, the result of the conversion of the symbol code in the 10B8B code conversion circuit 4 on the receiving end apparatus 3 becomes “49” in hexadecimal (“01001001” in binary in FIG. 3). When the transmitting end data “01010111” in binary and the receiving end data “01001001” in binary are compared, it may be seen that 4 bits have made a transition. In other words, the 1-bit error on the serial bus 5 becomes a 4-bit error in the transmitting and receiving data, and the number of error bits increases.
According to the data transfer method employing the conventional 8B10B encoding, it may be difficult to reduce the overhead of the bus at the time of the serial transfer and to effectively utilize the bandwidth of the bus.